package com.ethink.component.warehouse;

import com.ethink.warehouse.api.component.info.WarehouseInStockInfo;
import com.ethink.warehouse.api.component.info.WarehouseOutStockInfo;
import com.ethink.warehouse.api.component.request.*;
import com.ethink.warehouse.api.component.response.*;

/**
 * 仓库接口定义
 */
public interface WarehouseInter {

    /**
     * 新增商品信息
     *
     * @param request
     * @return
     */
    WarehouseAddMateResponse addMate(WarehouseAddMateRequest request);

    /**
     * 修改商品信息
     *
     * @param request
     * @return
     */
    WarehouseUpdateMateResponse updateMate(WarehouseUpdateMateRequest request);

    /**
     * 分页查询商品信息
     *
     * @param request
     * @return
     */
    WarehouseQueryMateResponse queryMate(WarehouseQueryMateRequest request);

    /**
     * 查询单个商品信息
     *
     * @param request
     * @return
     */
    WarehouseGetMateResponse getMate(WarehouseGetMateRequest request);

    /**
     * 库存查询
     *
     * @param request
     * @return
     */
    WarehouseQueryInventoryResponse queryInventory(WarehouseQueryInventoryRequest request);

    /**
     * 新增入库单
     *
     * @param request
     * @return
     */
    WarehouseAddInStockResponse addInStockOrder(WarehouseAddInStockRequest request);

    /**
     * 取消入库单
     *
     * @param request
     * @return
     */
    WarehouseCancelInStockResponse cancelInStockOrder(WarehouseCancelInStockRequest request);

    /**
     * 查询入库单详情
     *
     * @param request
     * @return
     */
    WarehouseInStockInfo getInStockOrder(WarehouseGetInStockRequest request);

    /**
     * 分页查询入库单
     *
     * @param request
     * @return
     */
    WarehouseQueryInStockResponse queryInStockOrder(WarehouseQueryInStockRequest request);

    /**
     * 新增出库单
     *
     * @param request
     * @return
     */
    WarehouseAddOutStockResponse addOutStockOrder(WarehouseAddOutStockRequest request);

    /**
     * 取消出库单
     *
     * @param request
     * @return
     */
    WarehouseCancelOutStockResponse cancelOutStockOrder(WarehouseCancelOutStockRequest request);

    /**
     * 查询出库单详情
     *
     * @param request
     * @return
     */
    WarehouseOutStockInfo getOutStockOrder(WarehouseGetOutStockRequest request);

    /**
     * 分页查询出库单
     *
     * @param request
     * @return
     */
    WarehouseQueryOutStockResponse queryOutStockOrder(WarehouseQueryIntStockRequest request);

    /**
     * 验签
     * @param request
     * @return
     */
    Boolean checkSignature(WarehouseCheckSignatureRequest request);

}
